package cn.chengpengper.dubbo.interfaces.goods;

import cn.chengpengper.seckill.common.cache.model.SeckillBusinessCache;
import cn.chengpengper.seckill.common.model.dto.SeckillGoodsDTO;

/**
 * @author chengpeng.hu
 */
public interface SeckillGoodsDubboService {
    /**
     * 根据id和版本号获取商品详情
     */
    SeckillGoodsDTO getSeckillGoods(Long id, Long version);

    /**
     * 扣减数据库库存
     */
    boolean decDbAvailableStock(Integer count, Long id);

    /**
     * 获取库存
     *
     * @param id 商品ID
     * @return 库存数量
     */
    Integer getAvailableStockById(Long id);

    /**
     * 获取商品的可用库存
     */
    SeckillBusinessCache<Integer> getAvailableStock(Long goodsId, Long version);
}
